package com.petmarket.contract;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.v3.client.Client;
import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray;
import org.fisco.bcos.sdk.v3.codec.datatypes.Event;
import org.fisco.bcos.sdk.v3.codec.datatypes.Function;
import org.fisco.bcos.sdk.v3.codec.datatypes.Type;
import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference;
import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int256;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int32;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple3;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple4;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple5;
import org.fisco.bcos.sdk.v3.contract.Contract;
import org.fisco.bcos.sdk.v3.crypto.CryptoSuite;
import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.v3.eventsub.EventSubCallback;
import org.fisco.bcos.sdk.v3.model.CryptoType;
import org.fisco.bcos.sdk.v3.model.TransactionReceipt;
import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.v3.transaction.manager.transactionv1.ProxySignTransactionManager;
import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class UserContract extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040523480156200001157600080fd5b5060408051600480825260a08201909252600091816020015b60608152602001906001900390816200002a5790505090506040518060400160405280600a81526020016962757965725f6e616d6560b01b815250816000815181106200007b576200007b62000324565b60200260200101819052506040518060400160405280600781526020016662616c616e636560c81b81525081600181518110620000bc57620000bc62000324565b6020026020010181905250604051806040016040528060078152602001661858d8dbdd5b9d60ca1b81525081600281518110620000fd57620000fd62000324565b60200260200101819052506040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508160038151811062000141576200014162000324565b6020026020010181905250600060405180606001604052806001808111156200016e576200016e6200033a565b8152602001604051806040016040528060078152602001661d5cd95c97da5960ca1b81525081526020018381525090506110026001600160a01b03166375b14eea6040518060400160405280600a815260200169757365725f7461626c6560b01b815250836040518363ffffffff1660e01b8152600401620001f2929190620003a0565b6020604051808303816000875af115801562000212573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000238919062000468565b50604080518082018252600a815269757365725f7461626c6560b01b6020820152905163f23f63c960e01b81526000916110029163f23f63c991620002809160040162000494565b602060405180830381865afa1580156200029e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c49190620004a9565b90506001600160a01b038116620002fb5760405162461bcd60e51b8152602060048201526000602482015260440160405180910390fd5b600080546001600160a01b0319166001600160a01b039290921691909117905550620004d49050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b8181101562000378576020818501810151868301820152016200035a565b818111156200038b576000602083870101525b50601f01601f19169290920160200192915050565b604081526000620003b5604083018562000350565b602083820381850152845160028110620003df57634e487b7160e01b600052602160045260246000fd5b8083525080850151606082840152620003fc606084018262000350565b90506040860151838203604085015281935080518083528383019450838160051b840101848301925060005b828110156200045a57601f198583030187526200044782855162000350565b9686019693860193915060010162000428565b509998505050505050505050565b6000602082840312156200047b57600080fd5b81518060030b81146200048d57600080fd5b9392505050565b6020815260006200048d602083018462000350565b600060208284031215620004bc57600080fd5b81516001600160a01b03811681146200048d57600080fd5b612a7480620004e46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80639608357f116100715780639608357f14610143578063b2beeb9014610156578063b7c2883614610169578063db5c2fab1461018c578063eb18b4871461019f578063f575cda0146101b257600080fd5b80633aa79edd146100ae578063428ffbbb146100d957806355f150f1146100f95780638cc77e7e1461010f578063950579e814610130575b600080fd5b6100c16100bc366004611e34565b6101da565b60405160039190910b81526020015b60405180910390f35b6100ec6100e7366004611e70565b610a0c565b6040516100d09190611f57565b610101610d20565b6040516100d0929190611fb9565b61012261011d3660046120ec565b610dc4565b6040519081526020016100d0565b6100c161013e3660046121fa565b610eda565b6100c1610151366004612292565b611134565b6100c1610164366004611e70565b611328565b61017c61017736600461234f565b61158e565b6040516100d0949392919061236a565b6100c161019a366004611e70565b611721565b6100c16101ad36600461234f565b611a3e565b6101c56101c0366004611e70565b611bd7565b60405163ffffffff90911681526020016100d0565b6000805460405163ecb6fef360e01b8152600786900b600482015282916001600160a01b03169063fcd7e3c19061100f9063ecb6fef390602401600060405180830381865afa158015610231573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102599190810190612407565b6040518263ffffffff1660e01b8152600401610275919061243b565b600060405180830381865afa158015610292573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102ba9190810190612556565b6000805460405163ecb6fef360e01b8152600788900b600482015292935090916001600160a01b039091169063fcd7e3c19061100f9063ecb6fef390602401600060405180830381865afa158015610316573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261033e9190810190612407565b6040518263ffffffff1660e01b815260040161035a919061243b565b600060405180830381865afa158015610377573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261039f9190810190612556565b90508160200151516004146103ee5760405162461bcd60e51b815260206004820152601060248201526f14d95b99195c881b9bdd08199bdd5b9960821b60448201526064015b60405180910390fd5b8060200151516004146104395760405162461bcd60e51b8152602060048201526013602482015272149958da5c1a595b9d081b9bdd08199bdd5b99606a1b60448201526064016103e5565b600061100f6001600160a01b0316635405817084602001516001815181106104635761046361258a565b60200260200101516040518263ffffffff1660e01b8152600401610487919061243b565b602060405180830381865afa1580156104a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c891906125a0565b9050600061100f6001600160a01b0316635405817084602001516001815181106104f4576104f461258a565b60200260200101516040518263ffffffff1660e01b8152600401610518919061243b565b602060405180830381865afa158015610535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055991906125a0565b9050858210156105a25760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016103e5565b6105ac86836125cf565b91506105b886826125e6565b60408051600180825281830190925291925060009190816020015b60408051808201909152606080825260208201528152602001906001900390816105d3579050506040805160808101825260078183019081526662616c616e636560c81b606083015281529051633682471160e21b81526004810186905291925090602082019061100f9063da091c4490602401600060405180830381865afa158015610664573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261068c9190810190612407565b815250816000815181106106a2576106a261258a565b602090810291909101015260005460405163ecb6fef360e01b815260078b900b60048201526001600160a01b03909116906341ffd75f9061100f9063ecb6fef390602401600060405180830381865afa158015610703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261072b9190810190612407565b836040518363ffffffff1660e01b8152600401610749929190612679565b6020604051808303816000875af1158015610768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078c919061269e565b50604080516001808252818301909252600091816020015b60408051808201909152606080825260208201528152602001906001900390816107a4579050506040805160808101825260078183019081526662616c616e636560c81b606083015281529051633682471160e21b81526004810186905291925090602082019061100f9063da091c4490602401600060405180830381865afa158015610835573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085d9190810190612407565b815250816000815181106108735761087361258a565b602090810291909101015260005460405163ecb6fef360e01b815260078b900b60048201526001600160a01b03909116906341ffd75f9061100f9063ecb6fef390602401600060405180830381865afa1580156108d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108fc9190810190612407565b836040518363ffffffff1660e01b815260040161091a929190612679565b6020604051808303816000875af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d919061269e565b508785602001516002815181106109765761097661258a565b602002602001015160405161098b91906126c1565b604051809103902087602001516002815181106109aa576109aa61258a565b60200260200101516040516109bf91906126c1565b60405190819003812060008252907f8f6b9fa4d4bf04c7c1c3242d4a5c59ba22525b6761cf89e44becb27c606154bd9060200160405180910390a4600096505050505050505b9392505050565b60408051808201825260008082526101f46020830152825160028082526060828101909552816020015b610a5b6040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081610a36579050506040805160608101825260008152815180830183526007808252661d5cd95c97da5960ca1b602080840191909152830191909152825163ecb6fef360e01b81529089900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015610ae9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b119190810190612407565b81525081600081518110","610b2757610b2761258a565b6020908102919091018101919091526040805160608101825260038152815180830183526007808252661d5cd95c97da5960ca1b8286015293820152815163ecb6fef360e01b81529287900b6004840152919082019061100f9063ecb6fef390602401600060405180830381865afa158015610ba7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bcf9190810190612407565b81525081600181518110610be557610be561258a565b602090810291909101015260008054604051632a92244160e01b81526001600160a01b0390911690632a92244190610c23908590879060040161277d565b600060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c6891908101906127b2565b9050600081516001600160401b03811115610c8557610c85611fde565b604051908082528060200260200182016040528015610cb857816020015b6060815260200190600190039081610ca35790505b50905060005b8151811015610d1557828181518110610cd957610cd961258a565b602002602001015160200151828281518110610cf757610cf761258a565b60200260200101819052508080610d0d90612862565b915050610cbe565b509695505050505050565b604080518082018252600a815269757365725f7461626c6560b01b6020820152905163b8764d3f60e01b815260609182916000916110029163b8764d3f91610d6a9160040161243b565b600060405180830381865afa158015610d87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610daf919081019061287d565b90508060200151816040015192509250509091565b600060ff84161580610dd957508360ff166001145b610de257600080fd5b60008460ff1660011415610df4575060015b60006040518060600160405280836001811115610e1357610e136126dd565b815260208101879052604090810186905251633ad8a77560e11b8152909150600090611002906375b14eea90610e4f908b908690600401612924565b6020604051808303816000875af1158015610e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e92919061269e565b604051600382900b81529091507fb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf2109060200160405180910390a160030b979650505050505050565b60408051600380825260808201909252600091829190816020015b6040805180820190915260608082526020820152815260200190600190039081610ef557505060408051608081018252600a9181019182526962757965725f6e616d6560b01b6060820152908152602081018790528151919250908290600090610f6157610f6161258a565b602002602001018190525060405180604001604052806040518060400160405280600781526020016662616c616e636560c81b81525081526020018581525081600181518110610fb357610fb361258a565b60200260200101819052506040518060400160405280604051806040016040528060078152602001661858d8dbdd5b9d60ca1b815250815260200184815250816002815181106110055761100561258a565b60209081029190910101526000805460405163ecb6fef360e01b8152600789900b60048201526001600160a01b03909116906341ffd75f9061100f9063ecb6fef390602401600060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261108f9190810190612407565b846040518363ffffffff1660e01b81526004016110ad929190612679565b6020604051808303816000875af11580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f0919061269e565b604051600382900b81529091507f8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a9060200160405180910390a19695505050505050565b604080518082019182905263ecb6fef360e01b909152600786900b604482015260009081908061100f63ecb6fef360648301600060405180830381865afa158015611183573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111ab9190810190612407565b815260408051600480825260a0820190925260209092019190816020015b60608152602001906001900390816111c95790505081525090508581602001516000815181106111fb576111fb61258a565b602002602001018190525084816020015160018151811061121e5761121e61258a565b60200260200101819052508381602001516002815181106112415761124161258a565b60200260200101819052508281602001516003815181106112645761126461258a565b602090810291909101015260008054604051635c6e105f60e01b81526001600160a01b0390911690635c6e105f906112a0908590600401612987565b6020604051808303816000875af11580156112bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e3919061269e565b604051600382900b81529091507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce9060200160405180910390a1979650505050505050565b60408051808201825260008082526101f4602083015282516002808252606082019094529092839190816020015b61137b6040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081611356579050506040805160608101825260008152815180830183526007808252661d5cd95c97da5960ca1b602080840191909152830191909152825163ecb6fef360e01b81529089900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114319190810190612407565b815250816000815181106114475761144761258a565b6020908102919091018101919091526040805160608101825260038152815180830183526007808252661d5cd95c97da5960ca1b8286015293820152815163ecb6fef360e01b81529287900b6004840152919082019061100f9063ecb6fef390602401600060405180830381865afa1580156114c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114ef9190810190612407565b815250816001815181106115055761150561258a565b602090810291909101015260005460405163a726071760e01b81526001600160a01b039091169063a726071790611542908490869060040161277d565b6020604051808303816000875af1158015611561573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611585919061269e565b95945050505050565b6000805460405163ecb6fef360e01b8152600784900b6004820152606092839283928392916001600160a01b03169063fcd7e3c19061100f9063ecb6fef390602401600060405180830381865afa1580156115ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116159190810190612407565b6040518263ffffffff1660e01b8152600401611631919061243b565b600060405180830381865afa15801561164e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116769190810190612556565b9050606080606080846020015151600414156117115784602001516000815181106116a3576116a361258a565b6020026020010151935084602001516001815181106116c4576116c461258a565b6020026020010151925084602001516002815181106116e5576116e561258a565b6020026020010151915084602001516003815181106117065761170661258a565b602002602001015190505b9299919850965090945092505050565b604080516001808252818301909252600091829190816020015b604080518082019091526060808252602082015281526020019060019003908161173b57905050905060405180604001604052806040518060400160405280600681526020016573746174757360d01b8152508152602001604051806040016040528060078152602001661d5c19185d195960ca1b815250815250816000815181106117c9576117c961258a565b60209081029190910181019190915260408051808201825260008082526101f4828501528251600280825260608201909452919390929082015b6118286040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081611803579050506040805160608101825260008152815180830183526007808252661d5cd95c97da5960ca1b602080840191909152830191909152825163ecb6fef360e01b8152908a900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa1580156118b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118de9190810190612407565b815250816000815181106118f4576118f461258a565b6020908102919091018101919091526040805160608101825260038152815180830183526007808252661d5cd95c97da5960ca1b8286015293820152815163ecb6fef360e01b81529288900b6004840152919082019061100f9063ecb6fef390602401600060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261199c9190810190612407565b815250816001815181106119b2576119b261258a565b6020908102919091010152600054604051634c9260bf60e11b81526001600160a01b0390911690639924c17e906119f1908490869088906004016129c0565b6020604051808303816000875af1158015611a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a34919061269e565b9695505050505050565b604080516001808252818301909252600091829190816020015b6040805180820190915260608082526020820152815260200190600190039081611a5857905050905060405180604001604052806040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508152602001604051806040016040528060018152602001603160f81b81525081525081600081518110611ae457611ae461258a565b60209081029190910101526000805460405163ecb6fef360e01b8152600786900b60048201526001600160a01b03909116906341ffd75f","9061100f9063ecb6fef390602401600060405180830381865afa158015611b46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b6e9190810190612407565b846040518363ffffffff1660e01b8152600401611b8c929190612679565b6020604051808303816000875af1158015611bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcf919061269e565b949350505050565b60408051600280825260608201909252600091829190816020015b611c176040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081611bf2579050506040805160608101825260008152815180830183526007808252661d5cd95c97da5960ca1b602080840191909152830191909152825163ecb6fef360e01b81529088900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015611ca5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ccd9190810190612407565b81525081600081518110611ce357611ce361258a565b6020908102919091018101919091526040805160608101825260038152815180830183526007808252661d5cd95c97da5960ca1b8286015293820152815163ecb6fef360e01b81529286900b6004840152919082019061100f9063ecb6fef390602401600060405180830381865afa158015611d63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d8b9190810190612407565b81525081600181518110611da157611da161258a565b602090810291909101015260005460405163da46335f60e01b81526001600160a01b039091169063da46335f90611ddc908490600401612a05565b602060405180830381865afa158015611df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcf9190612a18565b8035600781900b8114611e2f57600080fd5b919050565b600080600060608486031215611e4957600080fd5b611e5284611e1d565b9250611e6060208501611e1d565b9150604084013590509250925092565b60008060408385031215611e8357600080fd5b611e8c83611e1d565b9150611e9a60208401611e1d565b90509250929050565b60005b83811015611ebe578181015183820152602001611ea6565b83811115611ecd576000848401525b50505050565b60008151808452611eeb816020860160208601611ea3565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015611f4a57601f19868403018952611f38838351611ed3565b98840198925090830190600101611f1c565b5090979650505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611fac57603f19888603018452611f9a858351611eff565b94509285019290850190600101611f7e565b5092979650505050505050565b604081526000611fcc6040830185611ed3565b82810360208401526115858185611eff565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561201657612016611fde565b60405290565b604051601f8201601f191681016001600160401b038111828210171561204457612044611fde565b604052919050565b60006001600160401b0382111561206557612065611fde565b50601f01601f191660200190565b600082601f83011261208457600080fd5b81356120976120928261204c565b61201c565b8181528460208386010111156120ac57600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b038211156120e2576120e2611fde565b5060051b60200190565b6000806000806080858703121561210257600080fd5b84356001600160401b038082111561211957600080fd5b61212588838901612073565b9550602091508187013560ff8116811461213e57600080fd5b945060408701358181111561215257600080fd5b61215e89828a01612073565b94505060608701358181111561217357600080fd5b8701601f8101891361218457600080fd5b8035612192612092826120c9565b81815260059190911b8201840190848101908b8311156121b157600080fd5b8584015b838110156121e9578035868111156121cd5760008081fd5b6121db8e8983890101612073565b8452509186019186016121b5565b50989b979a50959850505050505050565b6000806000806080858703121561221057600080fd5b61221985611e1d565b935060208501356001600160401b038082111561223557600080fd5b61224188838901612073565b9450604087013591508082111561225757600080fd5b61226388838901612073565b9350606087013591508082111561227957600080fd5b5061228687828801612073565b91505092959194509250565b600080600080600060a086880312156122aa57600080fd5b6122b386611e1d565b945060208601356001600160401b03808211156122cf57600080fd5b6122db89838a01612073565b955060408801359150808211156122f157600080fd5b6122fd89838a01612073565b9450606088013591508082111561231357600080fd5b61231f89838a01612073565b9350608088013591508082111561233557600080fd5b5061234288828901612073565b9150509295509295909350565b60006020828403121561236157600080fd5b610a0582611e1d565b60808152600061237d6080830187611ed3565b828103602084015261238f8187611ed3565b905082810360408401526123a38186611ed3565b905082810360608401526123b78185611ed3565b979650505050505050565b600082601f8301126123d357600080fd5b81516123e16120928261204c565b8181528460208386010111156123f657600080fd5b611bcf826020830160208701611ea3565b60006020828403121561241957600080fd5b81516001600160401b0381111561242f57600080fd5b611bcf848285016123c2565b602081526000610a056020830184611ed3565b600082601f83011261245f57600080fd5b8151602061246f612092836120c9565b82815260059290921b8401810191818101908684111561248e57600080fd5b8286015b84811015610d155780516001600160401b038111156124b15760008081fd5b6124bf8986838b01016123c2565b845250918301918301612492565b6000604082840312156124df57600080fd5b604051604081016001600160401b03828210818311171561250257612502611fde565b81604052829350845191508082111561251a57600080fd5b612526868387016123c2565b8352602085015191508082111561253c57600080fd5b506125498582860161244e565b6020830152505092915050565b60006020828403121561256857600080fd5b81516001600160401b0381111561257e57600080fd5b611bcf848285016124cd565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125b257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156125e1576125e16125b9565b500390565b600082198211156125f9576125f96125b9565b500190565b600081518084526020808501808196508360051b8101915082860160005b8581101561266c57828403895281516040815181875261263e82880182611ed3565b915050868201519150858103878701526126588183611ed3565b9a87019a955050509084019060010161261c565b5091979650505050505050565b60408152600061268c6040830185611ed3565b828103602084015261158581856125fe565b6000602082840312156126b057600080fd5b81518060030b8114610a0557600080fd5b600082516126d3818460208701611ea3565b9190910192915050565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b8581101561266c57828403895281516060815160098110612734576127346126dd565b86528187015187870182905261274c82880182611ed3565b915050604080830151925086820381880152506127698183611ed3565b9a87019a9550505090840190600101612711565b60608152600061279060608301856126f3565b9050610a056020830184805163ffffffff908116835260209182015116910152565b600060208083850312156127c557600080fd5b82516001600160401b03808211156127dc57600080fd5b818501915085601f8301126127f057600080fd5b81516127fe612092826120c9565b81815260059190911b8301840190848101908883111561281d57600080fd5b8585015b83811015612855578051858111156128395760008081fd5b6128478b89838a01016124cd565b845250918601918601612821565b5098975050505050505050565b6000600019821415612876576128766125b9565b5060010190565b60006020828403121561288f57600080fd5b81516001600160401b03808211156128a657600080fd5b90830190606082860312156128ba57600080fd5b6128c2611ff4565b8251600281106128d157600080fd5b81526020830151828111156128e557600080fd5b6128f1878286016123c2565b60208301525060408301518281111561290957600080fd5b6129158782860161244e565b60408301525095945050505050565b6040815260006129376040830185611ed3565b8281036020840152835160028110612951576129516126dd565b8082525060208401516060602083015261296e6060830182611ed3565b9050604085015182820360408401526123b78282611eff565b6020815260008251604060208401526129a36060840182611ed3565b90506020840151601f198483030160408501526115858282611eff565b6080815260006129d360808301866126f3565b6129f36020840186805163ffffffff908116835260209182015116910152565b8281036060840152611a3481856125fe565b602081526000610a0560208301846126f3565b600060208284031215612a2a57600080fd5b815163ffffffff81168114610a0557600080fdfea26469706673582212208c5cc2d38fd6059ebc4f51cee737d9b51f920f68913006669d3500d7c4f071ba64736f6c634300080b0033"};

    public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040523480156200001157600080fd5b5060408051600480825260a08201909252600091816020015b60608152602001906001900390816200002a5790505090506040518060400160405280600a81526020016962757965725f6e616d6560b01b815250816000815181106200007b576200007b62000325565b60200260200101819052506040518060400160405280600781526020016662616c616e636560c81b81525081600181518110620000bc57620000bc62000325565b6020026020010181905250604051806040016040528060078152602001661858d8dbdd5b9d60ca1b81525081600281518110620000fd57620000fd62000325565b60200260200101819052506040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508160038151811062000141576200014162000325565b6020026020010181905250600060405180606001604052806001808111156200016e576200016e6200033b565b8152602001604051806040016040528060078152602001661d5cd95c97da5960ca1b81525081526020018381525090506110026001600160a01b031663f6d7201d6040518060400160405280600a815260200169757365725f7461626c6560b01b815250836040518363ffffffff1660e01b8152600401620001f2929190620003a1565b6020604051808303816000875af115801562000212573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000238919062000469565b50604080518082018252600a815269757365725f7461626c6560b01b602082015290516359a48b6560e01b8152600091611002916359a48b6591620002809160040162000495565b602060405180830381865afa1580156200029e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c49190620004aa565b90506001600160a01b038116620002fc57604051636381e58960e11b8152602060048201526000602482015260440160405180910390fd5b600080546001600160a01b0319166001600160a01b039290921691909117905550620004d59050565b63b95aa35560e01b600052603260045260246000fd5b63b95aa35560e01b600052602160045260246000fd5b6000815180845260005b8181101562000379576020818501810151868301820152016200035b565b818111156200038c576000602083870101525b50601f01601f19169290920160200192915050565b604081526000620003b6604083018562000351565b602083820381850152845160028110620003e05763b95aa35560e01b600052602160045260246000fd5b8083525080850151606082840152620003fd606084018262000351565b90506040860151838203604085015281935080518083528383019450838160051b840101848301925060005b828110156200045b57601f198583030187526200044882855162000351565b9686019693860193915060010162000429565b509998505050505050505050565b6000602082840312156200047c57600080fd5b81518060030b81146200048e57600080fd5b9392505050565b6020815260006200048e602083018462000351565b600060208284031215620004bd57600080fd5b81516001600160a01b03811681146200048e57600080fd5b612a6780620004e56000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806363486062116100715780636348606214610155578063753582a41461016857806382083cca1461017e5780638af4602c14610191578063909fb8bd146101b4578063d5c698f3146101c757600080fd5b80630575a21d146100ae5780632682a07c146100d457806332694ee9146100fc57806334e5f90914610122578063553eb68314610142575b600080fd5b6100c16100bc366004611f2e565b6101da565b6040519081526020015b60405180910390f35b6100e76100e2366004612053565b6102f0565b60405163ffffffff90911681526020016100cb565b61010f61010a366004612086565b61053e565b60405160039190910b81526020016100cb565b610135610130366004612053565b610798565b6040516100cb91906121cf565b61010f610150366004612231565b610aac565b61010f6101633660046122ee565b610ca0565b6101706114d5565b6040516100cb92919061232a565b61010f61018c366004612053565b611579565b6101a461019f36600461234f565b6117df565b6040516100cb949392919061236a565b61010f6101c236600461234f565b611972565b61010f6101d5366004612053565b611b03565b600060ff841615806101ef57508360ff166001145b6101f857600080fd5b60008460ff166001141561020a575060015b60006040518060600160405280836001811115610229576102296123c2565b81526020810187905260409081018690525163f6d7201d60e01b81529091506000906110029063f6d7201d90610265908b9086906004016123d8565b6020604051808303816000875af1158015610284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a8919061243b565b604051600382900b81529091507f38411b2ef21b6826a8b9f48a1baa6b3388c3354ebdc5db749b35830ec581722d9060200160405180910390a160030b979650505050505050565b60408051600280825260608201909252600091829190816020015b6103306040805160608101909152806000815260200160608152602001606081525090565b81526020019060019003908161030b579050506040805160608101825260008152815180830183526007808252661d5cd95c97da5960ca1b60208084019190915283019190915282516361cd959d60e11b81529088900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa1580156103be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103e691908101906124a3565b815250816000815181106103fc576103fc6124d7565b6020908102919091018101919091526040805160608101825260038152815180830183526007808252661d5cd95c97da5960ca1b828601529382015281516361cd959d60e11b81529286900b6004840152919082019061100f9063c39b2b3a90602401600060405180830381865afa15801561047c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104a491908101906124a3565b815250816001815181106104ba576104ba6124d7565b6020908102919091010152600054604051633a081ed360e11b81526001600160a01b03909116906374103da6906104f5908490600401612577565b602060405180830381865afa158015610512573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610536919061258a565b949350505050565b60408051600380825260808201909252600091829190816020015b604080518082019091526060808252602082015281526020019060019003908161055957505060408051608081018252600a9181019182526962757965725f6e616d6560b01b60608201529081526020810187905281519192509082906000906105c5576105c56124d7565b602002602001018190525060405180604001604052806040518060400160405280600781526020016662616c616e636560c81b81525081526020018581525081600181518110610617576106176124d7565b60200260200101819052506040518060400160405280604051806040016040528060078152602001661858d8dbdd5b9d60ca1b81525081526020018481525081600281518110610669576106696124d7565b6020908102919091010152600080546040516361cd959d60e11b8152600789900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa1580156106cb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106f391908101906124a3565b846040518363ffffffff1660e01b815260040161071192919061261e565b6020604051808303816000875af1158015610730573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610754919061243b565b604051600382900b81529091507fd72ab475a08df05fbd4f7f8cb4db1ad9dbdc26f54437fa6794acd97357779d2a9060200160405180910390a19695505050505050565b60408051808201825260008082526101f46020830152825160028082526060828101909552816020015b6107e76040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816107c2579050506040805160608101825260008152815180830183526007808252661d5cd95c97da5960ca1b60208084019190915283019190915282516361cd959d60e11b81529089900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa158015610875573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089d91908101906124a3565b815250816000815181106108b3576108b36124d7565b6020908102919091018101919091526040805160608101825260038152815180830183526007808252661d5cd95c97da5960ca1b828601529382015281516361cd959d60e11b81529287900b6004840152919082019061100f9063c39b2b3a90602401600060405180830381865afa158015610933573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261095b91908101906124a3565b81525081600181518110610971576109716124d7565b60209081029190910101526000805460405163087c36d360e01b81526001600160a01b039091169063087c36d3906109af9085908790600401612643565b600060405180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109f49190810190612780565b9050600081516001600160401b03811115610a1157610a11611e20565b604051908082528060200260200182016040528015610a4457816020015b6060815260200190600190039081610a2f5790505b50905060005b8151811015610aa157828181518110610a6557610a656124d7565b602002602001015160200151828281518110610a8357610a836124d7565b60200260200101819052508080610a9990612846565b915050610a4a565b509695505050505050565b60408051808201918290526361cd959d60e11b909152600786900b604482015260009081908061100f63c39b2b3a60648301600060405180830381865afa158015610afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b2391","908101906124a3565b815260408051600480825260a0820190925260209092019190816020015b6060815260200190600190039081610b41579050508152509050858160200151600081518110610b7357610b736124d7565b6020026020010181905250848160200151600181518110610b9657610b966124d7565b6020026020010181905250838160200151600281518110610bb957610bb96124d7565b6020026020010181905250828160200151600381518110610bdc57610bdc6124d7565b6020908102919091010152600080546040516304c8b95360e41b81526001600160a01b0390911690634c8b953090610c18908590600401612861565b6020604051808303816000875af1158015610c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5b919061243b565b604051600382900b81529091507fdfc533ec2b52797a1229dc2495dbd3f4948f7c4c982ec077ad9d80810ec5c1f99060200160405180910390a1979650505050505050565b600080546040516361cd959d60e11b8152600786900b600482015282916001600160a01b031690635b325d789061100f9063c39b2b3a90602401600060405180830381865afa158015610cf7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1f91908101906124a3565b6040518263ffffffff1660e01b8152600401610d3b919061289a565b600060405180830381865afa158015610d58573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d8091908101906128ad565b600080546040516361cd959d60e11b8152600788900b600482015292935090916001600160a01b0390911690635b325d789061100f9063c39b2b3a90602401600060405180830381865afa158015610ddc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e0491908101906124a3565b6040518263ffffffff1660e01b8152600401610e20919061289a565b600060405180830381865afa158015610e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e6591908101906128ad565b9050816020015151600414610eb557604051636381e58960e11b815260206004820152601060248201526f14d95b99195c881b9bdd08199bdd5b9960821b60448201526064015b60405180910390fd5b806020015151600414610f0157604051636381e58960e11b8152602060048201526013602482015272149958da5c1a595b9d081b9bdd08199bdd5b99606a1b6044820152606401610eac565b600061100f6001600160a01b031663bcb0c2e48460200151600181518110610f2b57610f2b6124d7565b60200260200101516040518263ffffffff1660e01b8152600401610f4f919061289a565b602060405180830381865afa158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9091906128e1565b9050600061100f6001600160a01b031663bcb0c2e48460200151600181518110610fbc57610fbc6124d7565b60200260200101516040518263ffffffff1660e01b8152600401610fe0919061289a565b602060405180830381865afa158015610ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102191906128e1565b90508582101561106b57604051636381e58960e11b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610eac565b61107586836128fa565b91506110818682612911565b60408051600180825281830190925291925060009190816020015b604080518082019091526060808252602082015281526020019060019003908161109c579050506040805160808101825260078183019081526662616c616e636560c81b6060830152815290516318bd574160e21b81526004810186905291925090602082019061100f906362f55d0490602401600060405180830381865afa15801561112d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115591908101906124a3565b8152508160008151811061116b5761116b6124d7565b60209081029190910101526000546040516361cd959d60e11b815260078b900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa1580156111cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111f491908101906124a3565b836040518363ffffffff1660e01b815260040161121292919061261e565b6020604051808303816000875af1158015611231573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611255919061243b565b50604080516001808252818301909252600091816020015b604080518082019091526060808252602082015281526020019060019003908161126d579050506040805160808101825260078183019081526662616c616e636560c81b6060830152815290516318bd574160e21b81526004810186905291925090602082019061100f906362f55d0490602401600060405180830381865afa1580156112fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261132691908101906124a3565b8152508160008151811061133c5761133c6124d7565b60209081029190910101526000546040516361cd959d60e11b815260078b900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113c591908101906124a3565b836040518363ffffffff1660e01b81526004016113e392919061261e565b6020604051808303816000875af1158015611402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611426919061243b565b5087856020015160028151811061143f5761143f6124d7565b60200260200101516040516114549190612929565b60405180910390208760200151600281518110611473576114736124d7565b60200260200101516040516114889190612929565b60405190819003812060008252907f105af2c562df33af7eaa9de5fb0c18d8d30f281a18f95a8f76b44353a322693c9060200160405180910390a4600096505050505050505b9392505050565b604080518082018252600a815269757365725f7461626c6560b01b602082015290516361bb9b7160e11b815260609182916000916110029163c37736e29161151f9160040161289a565b600060405180830381865afa15801561153c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115649190810190612945565b90508060200151816040015192509250509091565b60408051808201825260008082526101f4602083015282516002808252606082019094529092839190816020015b6115cc6040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816115a7579050506040805160608101825260008152815180830183526007808252661d5cd95c97da5960ca1b60208084019190915283019190915282516361cd959d60e11b81529089900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa15801561165a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168291908101906124a3565b81525081600081518110611698576116986124d7565b6020908102919091018101919091526040805160608101825260038152815180830183526007808252661d5cd95c97da5960ca1b828601529382015281516361cd959d60e11b81529287900b6004840152919082019061100f9063c39b2b3a90602401600060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261174091908101906124a3565b81525081600181518110611756576117566124d7565b60209081029190910101526000546040516339c964e160e01b81526001600160a01b03909116906339c964e1906117939084908690600401612643565b6020604051808303816000875af11580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d6919061243b565b95945050505050565b600080546040516361cd959d60e11b8152600784900b6004820152606092839283928392916001600160a01b031690635b325d789061100f9063c39b2b3a90602401600060405180830381865afa15801561183e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261186691908101906124a3565b6040518263ffffffff1660e01b8152600401611882919061289a565b600060405180830381865afa15801561189f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118c791908101906128ad565b9050606080606080846020015151600414156119625784602001516000815181106118f4576118f46124d7565b602002602001015193508460200151600181518110611915576119156124d7565b602002602001015192508460200151600281518110611936576119366124d7565b602002602001015191508460200151600381518110611957576119576124d7565b602002602001015190505b9299919850965090945092505050565b604080516001808252818301909252600091829190816020015b604080518082019091526060808252602082015281526020019060019003908161198c57905050905060405180604001604052806040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508152602001604051806040016040528060018152602001603160f81b81525081525081600081518110611a1857611a186124d7565b6020908102919091010152600080546040516361cd959d60e11b8152600786900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa158015611a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa291908101906124a3565b846040518363ffffffff1660e01b8152600401611ac092919061261e565b6020604051808303816000875af1158015611adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610536919061243b565b6040805160018082528183019092526000918291908160","20015b6040805180820190915260608082526020820152815260200190600190039081611b1d57905050905060405180604001604052806040518060400160405280600681526020016573746174757360d01b8152508152602001604051806040016040528060078152602001661d5c19185d195960ca1b81525081525081600081518110611bab57611bab6124d7565b60209081029190910181019190915260408051808201825260008082526101f4828501528251600280825260608201909452919390929082015b611c0a6040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081611be5579050506040805160608101825260008152815180830183526007808252661d5cd95c97da5960ca1b60208084019190915283019190915282516361cd959d60e11b8152908a900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa158015611c98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc091908101906124a3565b81525081600081518110611cd657611cd66124d7565b6020908102919091018101919091526040805160608101825260038152815180830183526007808252661d5cd95c97da5960ca1b828601529382015281516361cd959d60e11b81529288900b6004840152919082019061100f9063c39b2b3a90602401600060405180830381865afa158015611d56573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d7e91908101906124a3565b81525081600181518110611d9457611d946124d7565b6020908102919091010152600054604051630341b28360e01b81526001600160a01b0390911690630341b28390611dd3908490869088906004016129ec565b6020604051808303816000875af1158015611df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e16919061243b565b9695505050505050565b63b95aa35560e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715611e5857611e58611e20565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611e8657611e86611e20565b604052919050565b60006001600160401b03821115611ea757611ea7611e20565b50601f01601f191660200190565b600082601f830112611ec657600080fd5b8135611ed9611ed482611e8e565b611e5e565b818152846020838601011115611eee57600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b03821115611f2457611f24611e20565b5060051b60200190565b60008060008060808587031215611f4457600080fd5b84356001600160401b0380821115611f5b57600080fd5b611f6788838901611eb5565b9550602091508187013560ff81168114611f8057600080fd5b9450604087013581811115611f9457600080fd5b611fa089828a01611eb5565b945050606087013581811115611fb557600080fd5b8701601f81018913611fc657600080fd5b8035611fd4611ed482611f0b565b81815260059190911b8201840190848101908b831115611ff357600080fd5b8584015b8381101561202b5780358681111561200f5760008081fd5b61201d8e8983890101611eb5565b845250918601918601611ff7565b50989b979a50959850505050505050565b8035600781900b811461204e57600080fd5b919050565b6000806040838503121561206657600080fd5b61206f8361203c565b915061207d6020840161203c565b90509250929050565b6000806000806080858703121561209c57600080fd5b6120a58561203c565b935060208501356001600160401b03808211156120c157600080fd5b6120cd88838901611eb5565b945060408701359150808211156120e357600080fd5b6120ef88838901611eb5565b9350606087013591508082111561210557600080fd5b5061211287828801611eb5565b91505092959194509250565b60005b83811015612139578181015183820152602001612121565b83811115612148576000848401525b50505050565b6000815180845261216681602086016020860161211e565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156121c25782840389526121b084835161214e565b98850198935090840190600101612198565b5091979650505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561222457603f1988860301845261221285835161217a565b945092850192908501906001016121f6565b5092979650505050505050565b600080600080600060a0868803121561224957600080fd5b6122528661203c565b945060208601356001600160401b038082111561226e57600080fd5b61227a89838a01611eb5565b9550604088013591508082111561229057600080fd5b61229c89838a01611eb5565b945060608801359150808211156122b257600080fd5b6122be89838a01611eb5565b935060808801359150808211156122d457600080fd5b506122e188828901611eb5565b9150509295509295909350565b60008060006060848603121561230357600080fd5b61230c8461203c565b925061231a6020850161203c565b9150604084013590509250925092565b60408152600061233d604083018561214e565b82810360208401526117d6818561217a565b60006020828403121561236157600080fd5b6114ce8261203c565b60808152600061237d608083018761214e565b828103602084015261238f818761214e565b905082810360408401526123a3818661214e565b905082810360608401526123b7818561214e565b979650505050505050565b63b95aa35560e01b600052602160045260246000fd5b6040815260006123eb604083018561214e565b8281036020840152835160028110612405576124056123c2565b80825250602084015160606020830152612422606083018261214e565b9050604085015182820360408401526123b7828261217a565b60006020828403121561244d57600080fd5b81518060030b81146114ce57600080fd5b600082601f83011261246f57600080fd5b815161247d611ed482611e8e565b81815284602083860101111561249257600080fd5b61053682602083016020870161211e565b6000602082840312156124b557600080fd5b81516001600160401b038111156124cb57600080fd5b6105368482850161245e565b63b95aa35560e01b600052603260045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b858110156121c25782840389528151606081516009811061252e5761252e6123c2565b8652818701518787018290526125468288018261214e565b91505060408083015192508682038188015250612563818361214e565b9a87019a955050509084019060010161250b565b6020815260006114ce60208301846124ed565b60006020828403121561259c57600080fd5b815163ffffffff811681146114ce57600080fd5b600081518084526020808501808196508360051b8101915082860160005b858110156121c25782840389528151604081518187526125f08288018261214e565b9150508682015191508581038787015261260a818361214e565b9a87019a95505050908401906001016125ce565b604081526000612631604083018561214e565b82810360208401526117d681856125b0565b60608152600061265660608301856124ed565b90506114ce6020830184805163ffffffff908116835260209182015116910152565b600082601f83011261268957600080fd5b81516020612699611ed483611f0b565b82815260059290921b840181019181810190868411156126b857600080fd5b8286015b84811015610aa15780516001600160401b038111156126db5760008081fd5b6126e98986838b010161245e565b8452509183019183016126bc565b60006040828403121561270957600080fd5b604051604081016001600160401b03828210818311171561272c5761272c611e20565b81604052829350845191508082111561274457600080fd5b6127508683870161245e565b8352602085015191508082111561276657600080fd5b5061277385828601612678565b6020830152505092915050565b6000602080838503121561279357600080fd5b82516001600160401b03808211156127aa57600080fd5b818501915085601f8301126127be57600080fd5b81516127cc611ed482611f0b565b81815260059190911b830184019084810190888311156127eb57600080fd5b8585015b83811015612823578051858111156128075760008081fd5b6128158b89838a01016126f7565b8452509186019186016127ef565b5098975050505050505050565b63b95aa35560e01b600052601160045260246000fd5b600060001982141561285a5761285a612830565b5060010190565b60208152600082516040602084015261287d606084018261214e565b90506020840151601f198483030160408501526117d6828261217a565b6020815260006114ce602083018461214e565b6000602082840312156128bf57600080fd5b81516001600160401b038111156128d557600080fd5b610536848285016126f7565b6000602082840312156128f357600080fd5b5051919050565b60008282101561290c5761290c612830565b500390565b6000821982111561292457612924612830565b500190565b6000825161293b81846020870161211e565b9190910192915050565b60006020828403121561295757600080fd5b81516001600160401b038082111561296e57600080fd5b908301906060828603121561298257600080fd5b61298a611e36565b82516002811061299957600080fd5b81526020830151828111156129ad57600080fd5b6129b98782860161245e565b6020830152506040830151828111156129d157600080fd5b6129dd87828601612678565b60408301525095945050505050565b6080815260006129ff60808301866124ed565b612a1f6020840186805163ffffffff908116835260209182015116910152565b8281036060840152611e1681856125b056fea26469706673582212209ff6682508ee9b2dba653b860c8d171d75565b9416bdfbf6933f3a52944baf6c64736f6c634300080b0033"};

    public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"ret\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"ret\",\"type\":\"int256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"from_account\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"to_account\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"selector\":[4118138272,646094972],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"tableName\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"keyOrder\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"createTable\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"selector\":[2361884286,91595293],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[],\"name\":\"desc\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"selector\":[1441878257,1966441124],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"buyerName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"balance\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"account\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"isDeleted\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2517120383,1430173315],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2998856592,2181577930],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[3944264839,2426386621],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string[][]\",\"name\":\"\",\"type\":\"string[][]\"}],\"selector\":[1116732347,887486729],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"selector\":[3082979382,2331271212],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"fromId\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"toId\",\"type\":\"int64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[984063709,1665687650],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"buyerName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"balance\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"account\",\"type\":\"string\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2500164072,845762281],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[3680251819,3586562291],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_COUNT = "count";

    public static final String FUNC_CREATETABLE = "createTable";

    public static final String FUNC_DESC = "desc";

    public static final String FUNC_INSERT = "insert";

    public static final String FUNC_REMOVE = "remove";

    public static final String FUNC_SELECT = "select";

    public static final String FUNC_TRANSFER = "transfer";

    public static final String FUNC_UPDATE = "update";

    public static final Event CREATERESULT_EVENT = new Event("CreateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event INSERTRESULT_EVENT = new Event("InsertResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event REMOVERESULT_EVENT = new Event("RemoveResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event TRANSFEREVENT_EVENT = new Event("TransferEvent", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Utf8String>(true) {}, new TypeReference<Utf8String>(true) {}, new TypeReference<Uint256>(true) {}));
    ;

    public static final Event UPDATERESULT_EVENT = new Event("UpdateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    protected UserContract(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
        this.transactionManager = new ProxySignTransactionManager(client);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public static String getABI() {
        return ABI;
    }

    public List<CreateResultEventResponse> getCreateResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CREATERESULT_EVENT, transactionReceipt);
        ArrayList<CreateResultEventResponse> responses = new ArrayList<CreateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CreateResultEventResponse typedResponse = new CreateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.ret = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCreateResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeCreateResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<InsertResultEventResponse> getInsertResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(INSERTRESULT_EVENT, transactionReceipt);
        ArrayList<InsertResultEventResponse> responses = new ArrayList<InsertResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            InsertResultEventResponse typedResponse = new InsertResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeInsertResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeInsertResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<RemoveResultEventResponse> getRemoveResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(REMOVERESULT_EVENT, transactionReceipt);
        ArrayList<RemoveResultEventResponse> responses = new ArrayList<RemoveResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            RemoveResultEventResponse typedResponse = new RemoveResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeRemoveResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeRemoveResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<TransferEventEventResponse> getTransferEventEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(TRANSFEREVENT_EVENT, transactionReceipt);
        ArrayList<TransferEventEventResponse> responses = new ArrayList<TransferEventEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            TransferEventEventResponse typedResponse = new TransferEventEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.from_account = (byte[]) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.to_account = (byte[]) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.amount = (BigInteger) eventValues.getIndexedValues().get(2).getValue();
            typedResponse.ret = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeTransferEventEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(TRANSFEREVENT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeTransferEventEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(TRANSFEREVENT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<UpdateResultEventResponse> getUpdateResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATERESULT_EVENT, transactionReceipt);
        ArrayList<UpdateResultEventResponse> responses = new ArrayList<UpdateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            UpdateResultEventResponse typedResponse = new UpdateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeUpdateResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeUpdateResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public BigInteger count(BigInteger idLow, BigInteger idHigh) throws ContractException {
        final Function function = new Function(FUNC_COUNT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public Function getMethodCountRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_COUNT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return function;
    }

    public TransactionReceipt createTable(String tableName, BigInteger keyOrder, String key,
            List<String> fields) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodCreateTableRawFunction(String tableName, BigInteger keyOrder,
            String key, List<String> fields) throws ContractException {
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        return function;
    }

    public String getSignedTransactionForCreateTable(String tableName, BigInteger keyOrder,
            String key, List<String> fields) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String createTable(String tableName, BigInteger keyOrder, String key,
            List<String> fields, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple4<String, BigInteger, String, List<String>> getCreateTableInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Uint8>() {}, new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<String, BigInteger, String, List<String>>(

                (String) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                convertToNative((List<Utf8String>) results.get(3).getValue())
                );
    }

    public Tuple1<BigInteger> getCreateTableOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple2<String, List<String>> desc() throws ContractException {
        final Function function = new Function(FUNC_DESC, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple2<String, List<String>>(
                (String) results.get(0).getValue(), 
                convertToNative((List<Utf8String>) results.get(1).getValue()));
    }

    public Function getMethodDescRawFunction() throws ContractException {
        final Function function = new Function(FUNC_DESC, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        return function;
    }

    public TransactionReceipt insert(BigInteger id, String buyerName, String balance,
            String account, String isDeleted) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(balance), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodInsertRawFunction(BigInteger id, String buyerName, String balance,
            String account, String isDeleted) throws ContractException {
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(balance), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForInsert(BigInteger id, String buyerName, String balance,
            String account, String isDeleted) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(balance), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String insert(BigInteger id, String buyerName, String balance, String account,
            String isDeleted, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(balance), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple5<BigInteger, String, String, String, String> getInsertInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple5<BigInteger, String, String, String, String>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                (String) results.get(4).getValue()
                );
    }

    public Tuple1<BigInteger> getInsertOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt remove(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodRemoveRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForRemove(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String remove(BigInteger idLow, BigInteger idHigh, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple2<BigInteger, BigInteger> getRemoveInt64Int64Input(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getRemoveInt64Int64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt remove(BigInteger id) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodRemoveRawFunction(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForRemove(BigInteger id) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String remove(BigInteger id, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple1<BigInteger> getRemoveInt64Input(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple1<BigInteger> getRemoveInt64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public List select(BigInteger idLow, BigInteger idHigh) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<DynamicArray<Utf8String>>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public Function getMethodSelectRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<DynamicArray<Utf8String>>>() {}));
        return function;
    }

    public Tuple4<String, String, String, String> select(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple4<String, String, String, String>(
                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue());
    }

    public Function getMethodSelectRawFunction(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        return function;
    }

    public TransactionReceipt transfer(BigInteger fromId, BigInteger toId, BigInteger amount) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(fromId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(toId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(amount)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodTransferRawFunction(BigInteger fromId, BigInteger toId,
            BigInteger amount) throws ContractException {
        final Function function = new Function(FUNC_TRANSFER, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(fromId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(toId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(amount)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForTransfer(BigInteger fromId, BigInteger toId,
            BigInteger amount) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(fromId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(toId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(amount)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String transfer(BigInteger fromId, BigInteger toId, BigInteger amount,
            TransactionCallback callback) {
        final Function function = new Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(fromId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(toId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(amount)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple3<BigInteger, BigInteger, BigInteger> getTransferInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_TRANSFER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Int64>() {}, new TypeReference<Uint256>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<BigInteger, BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue()
                );
    }

    public Tuple1<BigInteger> getTransferOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_TRANSFER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt update(BigInteger id, String buyerName, String balance,
            String account) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(balance), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodUpdateRawFunction(BigInteger id, String buyerName, String balance,
            String account) throws ContractException {
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(balance), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForUpdate(BigInteger id, String buyerName, String balance,
            String account) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(balance), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String update(BigInteger id, String buyerName, String balance, String account,
            TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(balance), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(account)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple4<BigInteger, String, String, String> getUpdateInt64StringStringStringInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<BigInteger, String, String, String>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue()
                );
    }

    public Tuple1<BigInteger> getUpdateInt64StringStringStringOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt update(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodUpdateRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForUpdate(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String update(BigInteger idLow, BigInteger idHigh, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple2<BigInteger, BigInteger> getUpdateInt64Int64Input(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getUpdateInt64Int64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public static UserContract load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new UserContract(contractAddress, client, credential);
    }

    public static UserContract deploy(Client client, CryptoKeyPair credential) throws ContractException {
        return deploy(UserContract.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null);
    }

    public static class CreateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger ret;
    }

    public static class InsertResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class RemoveResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class TransferEventEventResponse {
        public TransactionReceipt.Logs log;

        public byte[] from_account;

        public byte[] to_account;

        public BigInteger amount;

        public BigInteger ret;
    }

    public static class UpdateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }
}
